﻿/********************************************************************************
** @ Date:2024/04/07
** @ Author: Gaojia
** @ Description: 相机控制管理类
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef CCamerCtrMange_H
#define CCamerCtrMange_H
#include "CCamerSdkOperEx.h"

class CCamerCtrMange :public QObject
{
	Q_OBJECT
public:
	CCamerCtrMange(CDevDataBase *pDevData);
	~CCamerCtrMange();
	void ThreadStart();
	void ThreadStop();
	bool ctrDevice(SCtrInfo &stCtrInfo);//Modifywxy 改成引用
	bool ctrDeviceEx(SCtrInfo stCtrInfo);
private:
	bool ctrDeviceMy(SCtrInfo &stCtrInfo);//Modifywxy 改成引用
	bool login(SCtrInfo stCtrInfo);		  //登录
	bool realPlay(SCtrInfo stCtrInfo);          //启动预览 
	bool stopRealPlay(SCtrInfo stCtrInfo);      //停止预览 
	bool ptzPresetOther(SCtrInfo stCtrInfo);    //
	bool capture(SCtrInfo &stCtrInfo);           //拍照   //Modifywxy 改成引用
	bool ptzControlOther(SCtrInfo stCtrInfo);   //控制云台
	bool recordVideo(SCtrInfo stCtrInfo);       //录像 
	bool stopRecordVideo(SCtrInfo stCtrInfo);   //停止录像 
	bool startVoiceTalk(SCtrInfo stCtrInfo);    //启动对讲
	bool stopVoiceTalk(SCtrInfo stCtrInfo);     //停止对讲	
	bool startVoiceForward(SCtrInfo stCtrInfo); //开始语音转发
	bool endVoiceForward(SCtrInfo stCtrInfo); //停止语音转发
	bool broadcastAudio(SCtrInfo stCtrInfo);	//语音转发
	bool execItem(SCtrInfo cCtrInfo);           //执行巡检项工作
	bool setMode(SCtrInfo cCtrInfo);            //设置模式
	bool setPresetArea(SCtrInfo cCtrInfo);      //设置预置点区域
protected:
	QVector<SCtrInfo>m_vecCtrQueue;
	QThread  *m_pThread;        //异步工作线程
	bool      m_bhread;         //异步线程状态
	QMutex   *m_pMutex;
private slots:
	void slot_ThreadWork();

signals:
	void sign_ExecResult(SCtrReData cCtrReData);
private:
	CDevDataBase *m_pDevData;
	CDevDataCam *m_pDevDataCam; //巡检机器人数据类
	CCamerSdkOper *m_pCamerSdkOper; //云台相机SDK帮助类
};

#endif